home *** CD-ROM | disk | FTP | other *** search
- #define DEBUG 0
- /*
- TOWNS囲碁棋譜記録プログラム
- 1993/07/12 久保田俊也
-
- */
- #include "igo.h"
- #include "banx.h"
- #include "kiffile.h"
- #include "title.h"
-
- static int kaiten, hanten;
- /* kaiten 0=普通 1=右1/4回転 2=右半回転 3=右3/4回転 */
- /* hanten 1=普通 -1=反転 */
-
- int henkan_init()
- {
- kaiten = 0;
- hanten = 1;
- return 0;
- }
-
- int henkan_set( int dkaiten, int dhanten)
- {
-
- kaiten = (kaiten + dkaiten) % 4;
- hanten = hanten * dhanten;
-
- return 0;
- }
-
- /* 変換処理をした後、xとyの位置になる値を求める関数 */
- int henkan_disp_out( int x, int y)
- {
- BAN_TYPE ban_type;
- int type, bansize, bansize2;
- int henkanx, henkany;
-
- ban_type = *title_bantype_read();
- if( ban_type.type == NORMAL){
- type = NORMAL;
- bansize = ban_type.size;
- bansize2 = (bansize+1)*(bansize+2)+1;
- }
-
- switch(kaiten){
- case 0:
- henkanx = x;
- henkany = y;
- break;
- case 1: /* 元へ戻すにはさらに右3/4回転 */
- henkanx = y;
- henkany = bansize-x+1;
- break;
- case 2:
- henkanx = bansize-x+1;
- henkany = bansize-y+1;
- break;
- case 3: /* 元へ戻すにはさらに右1/4回転 */
- henkanx = bansize-y+1;
- henkany = x;
- break;
- default:
- break;
- }
-
- switch(hanten){
- case 1:
- break;
- case -1:
- henkanx = bansize-henkanx+1;
- break;
- default:
- break;
- }
-
- return henkanx + henkany*(bansize+1);
-
- }
-
- /* 変換処理をした後、xとyの位置が何処になるかを求める関数 */
- int henkan_disp_in( int x, int y)
- {
- BAN_TYPE ban_type;
- int type, bansize, bansize2;
- int henkanx, henkany;
-
- ban_type = *title_bantype_read();
- if( ban_type.type == NORMAL){
- type = NORMAL;
- bansize = ban_type.size;
- bansize2 = (bansize+1)*(bansize+2)+1;
- }
-
- switch(hanten){
- case 1:
- break;
- case -1:
- x = bansize-x+1;
- break;
- default:
- break;
- }
-
- switch(kaiten){
- case 0:
- henkanx = x;
- henkany = y;
- break;
- case 1:
- henkanx = bansize-y+1;
- henkany = x;
- break;
- case 2:
- henkanx = bansize-x+1;
- henkany = bansize-y+1;
- break;
- case 3:
- henkanx = y;
- henkany = bansize-x+1;
- break;
- default:
- break;
- }
-
- return henkanx + henkany*(bansize+1);
-
- }
-
-